package com.fx.zmlzml.exception;

import lombok.Getter;

/**
 * 自定义业务异常类
 */
@Getter
public class BusinessException extends RuntimeException {
    
    private final int code; // 错误码
    
    /**
     * 构造方法，使用默认错误码
     */
    public BusinessException(String message) {
        super(message);
        this.code = 500; // 默认错误码
    }
    
    /**
     * 构造方法，指定错误码
     */
    public BusinessException(int code, String message) {
        super(message);
        this.code = code;
    }
    
    /**
     * 构造方法，包含异常原因
     */
    public BusinessException(String message, Throwable cause) {
        super(message, cause);
        this.code = 500;
    }
    
    /**
     * 构造方法，指定错误码和异常原因
     */
    public BusinessException(int code, String message, Throwable cause) {
        super(message, cause);
        this.code = code;
    }
    
    /**
     * 构造方法，使用错误枚举
     */
    public BusinessException(ErrorEnum errorEnum) {
        super(errorEnum.getMessage());
        this.code = errorEnum.getCode();
    }
    
    /**
     * 构造方法，使用错误枚举和自定义消息
     */
    public BusinessException(ErrorEnum errorEnum, String message) {
        super(message);
        this.code = errorEnum.getCode();
    }
    
    /**
     * 构造方法，使用错误枚举和异常原因
     */
    public BusinessException(ErrorEnum errorEnum, Throwable cause) {
        super(errorEnum.getMessage(), cause);
        this.code = errorEnum.getCode();
    }
    
    /**
     * 构造方法，使用错误枚举、自定义消息和异常原因
     */
    public BusinessException(ErrorEnum errorEnum, String message, Throwable cause) {
        super(message, cause);
        this.code = errorEnum.getCode();
    }
}